package com.itheima.d8_generics_method;

import java.lang.reflect.Array;
import java.util.ArrayList;
import java.util.List;

//演示：泛型的通配符
public class Test2 {
    public static void main(String[] args) {
        //创建集合     ArrayList类实现List接口
        //多态的体现 ：  泛型不存在多态
        //List<Person> list = new ArrayList<Student>();

        //可以使用泛型的通配符，来表示泛型类型是任意类型
        List<?> list2 = new ArrayList<Student>();
        List<?> list3 = new ArrayList<Teacher>();


        //测试：泛型的上限
        List<String> list4 = new ArrayList<>();
        //method1(list4);
        List<Person> list5 = new ArrayList<>();
        method1(list5);
        List<Teacher> list6 = new ArrayList<>();
        method1(list6);


        //测试：泛型的下限
        List<Student> list7 = new ArrayList<>();
        method2(list7);
        method2(list5);
        //method2(list6);//报错。 集合中的元素类型是Teacher
    }

    //泛型通配符的应用： 泛型的上限
    //参数：集合中的元素只能是Person类型或其子类型
    public static void method1(List<? extends Person> list){

    }

    //泛型通配符的应用： 泛型的下限
    //参数：集合（集合中的元素只能是Student类型或其父类型）
    public static void method2(List<? super Student> list){

    }
}
